摘要:最近看《计算机体系结构:量化研究方法(第五版)》,发现指令集设计中的一些原则,对API设计也同样适用,给大家分享一下。本文中的所有内容来自工作和学习过程中的心得整理,如需转载请注明出处。周荣华@燧原科技1 正交指令集需要满足操作、数据类型和寻址方式三个方面的功能就是正交的。所以API设计应该也要满足对外的一些功能需求,一般是基本操作、数据类型定义和内存访问方式。正交的要求不只是接口设计要覆盖所有功能,还需要尽量减少冗余接口。2 提供原语而不是解决方案API应该提供完成解决方案需要的一些原语的集合,而不是某个解决方案。提供解决方案到API中的最大缺点是稳定性太差,这些解决方案可能在当前适用
摘要:最近看《计算机体系结构:量化研究方法(第五版)》,发现指令集设计中的一些原则,对API设计也同样适用,给大家分享一下。本文中的所有内容来自工作和学习过程中的心得整理,如需转载请注明出处。周荣华@燧原科技1 正交指令集需要满足操作、数据类型和寻址方式三个方面的功能就是正交的。所以API设计应该也要满足对外的一些功能需求,一般是基本操作、数据类型定义和内存访问方式。正交的要求不只是接口设计要覆盖所有功能,还需要尽量减少冗余接口。2 提供原语而不是解决方案API应该提供完成解决方案需要的一些原语的集合,而不是某个解决方案。提供解决方案到API中的最大缺点是稳定性太差,这些解决方案可能在当前适用
写在前面本篇博客参考了B站UP主是叶十三,里面关于一些常用指令的介绍较为全面,感谢其热心分享,学到了很多基础知识。同时欢迎大家批评指正(可能也就自己读),本篇文章均出自个人浅薄经验整理,难免有不严谨地方,自己也会勤加修订,忘多多包涵。一、基础指令及用处文章打算参考论文结构出发,从大纲和内容两大方面讲解指令。大纲一般为整体框架描述;内容一般分为关键句和理论支撑。关键句用来说明自己的观点,理论支撑用来保证自己观点有理可依。故相关指令介绍如下:第二部分大纲相关指令较为简单,指令一般仅用一或二级标题。重点在于第三部分内容部分相关指令。关键句用字体指令用来强调自己要表达的主旨。理论支撑就有很多指令了。原
写在前面本篇博客参考了B站UP主是叶十三,里面关于一些常用指令的介绍较为全面,感谢其热心分享,学到了很多基础知识。同时欢迎大家批评指正(可能也就自己读),本篇文章均出自个人浅薄经验整理,难免有不严谨地方,自己也会勤加修订,忘多多包涵。一、基础指令及用处文章打算参考论文结构出发,从大纲和内容两大方面讲解指令。大纲一般为整体框架描述;内容一般分为关键句和理论支撑。关键句用来说明自己的观点,理论支撑用来保证自己观点有理可依。故相关指令介绍如下:第二部分大纲相关指令较为简单,指令一般仅用一或二级标题。重点在于第三部分内容部分相关指令。关键句用字体指令用来强调自己要表达的主旨。理论支撑就有很多指令了。原
二值图像的细化算法也有很多种,比较有名的比如Hilditch细化、Rosenfeld细化、基于索引表的细化、还有Opencv自带的THINNING_ZHANGSUEN、THINNING_GUOHALL喜欢等等。这些都属于迭代的细化方式,当然还有一种是基于二值图像距离变换的细化方法,二值想比较,我个人认为是基于迭代的效果稳定、可靠,但是速度较慢,且速度和图片的内容有关,基于距离变换的版本,优点是速度稳定,但是效果差强人意。本文这里还是选择基于迭代的方式予以实现。 相关的参考文章有:http://cgm.cs.mcgill.ca/~godfried/teaching/projects
二值图像的细化算法也有很多种,比较有名的比如Hilditch细化、Rosenfeld细化、基于索引表的细化、还有Opencv自带的THINNING_ZHANGSUEN、THINNING_GUOHALL喜欢等等。这些都属于迭代的细化方式,当然还有一种是基于二值图像距离变换的细化方法,二值想比较,我个人认为是基于迭代的效果稳定、可靠,但是速度较慢,且速度和图片的内容有关,基于距离变换的版本,优点是速度稳定,但是效果差强人意。本文这里还是选择基于迭代的方式予以实现。 相关的参考文章有:http://cgm.cs.mcgill.ca/~godfried/teaching/projects
aaa/aasaaa;将AL的加和调整为非压缩BCD码,AH=AH+调整的进位aas;将AL的减差调整为非压缩BCD码,AH=AH+调整的借位先执行以AL为目的操作数的加法或减法指令addadd目的,源;加法指令,结果放入目操作数,操作数的长度必须相同adcadc目的,源;带进位加法,目的=目的+源+CF主要与ADD配合,实现多精度加法运算andand目的,源;逻辑按位与指令,结果放到目的操作数。;影响标志位OF、SF、ZF、PF和CF。callcalls;使calls下一条指令的CS:IP入栈(段内转移只有IP入栈),跳转到标号处cbw/cwdcbw;AL的符号扩展至AXcwd;AX的符号扩
aaa/aasaaa;将AL的加和调整为非压缩BCD码,AH=AH+调整的进位aas;将AL的减差调整为非压缩BCD码,AH=AH+调整的借位先执行以AL为目的操作数的加法或减法指令addadd目的,源;加法指令,结果放入目操作数,操作数的长度必须相同adcadc目的,源;带进位加法,目的=目的+源+CF主要与ADD配合,实现多精度加法运算andand目的,源;逻辑按位与指令,结果放到目的操作数。;影响标志位OF、SF、ZF、PF和CF。callcalls;使calls下一条指令的CS:IP入栈(段内转移只有IP入栈),跳转到标号处cbw/cwdcbw;AL的符号扩展至AXcwd;AX的符号扩
目录回顾预备知识:指令预备知识:通道1.生成并执行指令1.1.Primitive生成指令1.2.Context对象负责执行WebGL底层代码2.多段视锥体技术3.指令对象的转移筛选可见集4.本篇总结回顾书接上文,Scene.js模块内的render函数会将控制权交给WebGL,执行CesiumJS自己封装的指令对象,画出每一帧来。模块内的render函数首先会更新一批状态信息,譬如帧状态、雾效、Uniform值、通道状态、三维场景中的环境信息等,然后就开始更新并执行指令,调用的是Scene原型链上的updateAndExecuteCommands方法。整个过程大致的调用链是这样的(functi
目录回顾预备知识:指令预备知识:通道1.生成并执行指令1.1.Primitive生成指令1.2.Context对象负责执行WebGL底层代码2.多段视锥体技术3.指令对象的转移筛选可见集4.本篇总结回顾书接上文,Scene.js模块内的render函数会将控制权交给WebGL,执行CesiumJS自己封装的指令对象,画出每一帧来。模块内的render函数首先会更新一批状态信息,譬如帧状态、雾效、Uniform值、通道状态、三维场景中的环境信息等,然后就开始更新并执行指令,调用的是Scene原型链上的updateAndExecuteCommands方法。整个过程大致的调用链是这样的(functi